home *** CD-ROM | disk | FTP | other *** search
/ Aminet 33 / Aminet 33 - October 1999.iso / Aminet / docs / misc / amigapl.9809.lzh / log.9809 / text0056.txt < prev    next >
Encoding:
Text File  |  1998-10-01  |  1.6 KB  |  73 lines

  1. Dnia 01-Wrz-98, RHS Linux User napisal:
  2. >Witajcie,
  3. >Mam pytanie do programuj±cych w C++
  4. >1.
  5. >Jak mam siê dobraæ do klasy je¿eli jest ona zdefiniowana w inym pliku?
  6. >¯adne extern nie wchodzi w rachubê bo kompilator mi siê krzywi.
  7.  
  8. W pliku *.h musi byc deklaracja klasy (taka definicja typu)
  9.  
  10. class XXX
  11. {
  12.   ...
  13.      XXX(int x);   // przykladowo konstruktor
  14.   ...
  15. };
  16.  
  17.  
  18. A w pliku *.cpp ciala metod tej klasy. 
  19.  
  20. ...
  21. XXX::XXX(int x)
  22. {
  23. ...
  24. }
  25. ...
  26.  
  27.  
  28. Wtedy w kazdym module w ktorym jest #include "xxx.h" mozna 
  29. korzystac z klasy. Oczywiscie trzeba odpowiednio przygotowac
  30. makefile.
  31.  
  32. >2.
  33. >Dlaczego jak najpierw zdefiniujê obiekt klasy w procedurze powiedzmy 
  34. >main()
  35. >a potem chcê wywo³aæ metodê z tego objektu w innej procedurze
  36. >to kompilator mi siê krzaczy ¿e obiekt nie zosta³ zadeklarowany.
  37. >Jak to omin±æ? Mam za ka¿dym razem tworzyæ objekt w ka¿dej procedurze
  38. >w sposób statyczny?
  39.  
  40. To bez sensu - w kazdej procedurze bedzie to inny obiekt.
  41. Sa dwa rozwiazania
  42. 1. Zadeklarowac obiekt poza funkcja main - jako globalny
  43. 2. Przekazywac ten obiekt jako parametr do kazdej funkcji
  44.    ktora go potrzebuje. Najlepiej jako referencje ( XXX &obiekt)
  45.  
  46.  
  47.  
  48. >3.
  49. >Jak zdefiniujê sobie tablicê poprzez AllocVec mam typ APTR ale chcia³bym
  50. >odnie¶æ siê do tej tablicy poprzez index do jej poszczególnych 
  51. >elementów.
  52. >Mam zastosowaæ jakie¶ rzutowanie?Je¶li tak to w jaki sposób?Mogê to 
  53. >sobie
  54. >napisaæ w assemblerze ale chcia³bym zobaczyæ jak to zrobiæ (o ile jest 
  55. >to
  56. >mo¿liwe) w C++.
  57.  
  58. long *vec;
  59.  
  60.  
  61.    vec = (long *)AllocVec(...);
  62.    // i tutaj mozna vec[nn]
  63.    
  64.  
  65.  
  66.  
  67. -- 
  68. Krzysztof Rudnik     mail: rudnik@kki.net.pl
  69.     A1230T 882/50MHz 16MB, CD-ROM, HDD 1GB 
  70.  
  71.  
  72.  
  73.